package com.dateConstruction._02_seqList;

// ADT List<T>  线性表抽象数据类型，T表示数据元素的数据类型
public interface List<T> {

    // 判断是否为空，若为空，则返回true
    boolean isEmpty();
    
    // 返回元素个数(线性表长度)
    int size();
    
    // 查找并返回首个与key相等的元素；若查找不成功，则返回null
    T search(T key);
    
    // 查找并返回首个与key相等的元素，返回被删除元素
    T remove(T key);
    
    // 删除所有元素
    void clear();
    
    // 返回所有元素的描述字符串
    String toString();
    
    // 比较this与obj引用线性表的所有元素是否相等
    boolean equals(Object obj);
    
    // 线性表增加以下方法，参数i表示元素序号，指定操作位置
    // 返回第i个元素
    T get(int i);
    
    // 设置第i个元素为x
    void set(int i, T x);
    
    // 插入x，作为第i个元素
    int insert(int i, T x);
    
    // 在尾表插入x元素
    int insert(T x);
    
    // 删除第i个元素，返回被删除元素
    T remove(int i);
}
